package com.leetcode;


import java.util.Arrays;

/**
 * 2373. 矩阵中的局部最大值 (简单)
 * 给你一个大小为 n x n 的整数矩阵 grid 。
 * 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵  maxLocal ，并满足：
 * maxLocal[i][j] 等于 grid 中以 i + 1 行和 j + 1 列为中心的 3 x 3 矩阵中的 最大值 。
 * 换句话说，我们希望找出 grid 中每个 3 x 3 矩阵中的最大值。
 * 返回生成的矩阵。
 */
public class LeetCode2373 {

    public static void main(String[] arg0) {
        int[][] items1 = new int[3][3];
        items1[0] = new int[]{1, 1, 8};
        items1[1] = new int[]{3, 2, 8};
        items1[2] = new int[]{2, 3, 8};

        int[][] ret = largestLocal(items1);
        for (int i = 0; i < ret.length; i++) {
            System.out.println("结果第" + i + "行: " + Arrays.toString(ret[i]));
        }
    }

    public static int[][] largestLocal(int[][] grid) {
        int hangNum = grid.length; // 行数，也是列数
        int[][] res = new int[hangNum - 2][hangNum - 2];

        for (int i = 1; i < hangNum - 1; i++) {
            for (int j = 1; j < hangNum - 1; j++) {
                int a = Integer.MIN_VALUE;
                for (int k = -1; k <= 1; k++) {
                    for (int l = -1; l <= 1; l++) {
                        a = Math.max(a, grid[i + k][j + l]);
                    }
                }
                res[i - 1][j - 1] = a;
            }
        }

        return res;
    }

}
